{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA - Principle Component Analysis\n",
    "\n",
    "- Standardize the d-dimensional dataset, X\n",
    "- Construct covariance matrix \n",
    "- Decompose the covariance matrix into eigenvectors and eigenvalues\n",
    "- Select k-eigenvectors that corresponds to the k largest eigenvalues, k is dimension of new feature space and k ≤ d\n",
    "- Construct a projection matrix W from the top k eigenvectors\n",
    "- Transform the d-dimensional input dataset of X using the projection matrix W to obtain new k-dimensional features subspace. \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.metrics import accuracy_score\n",
    "\n",
    "from sklearn.decomposition import PCA, KernelPCA, LatentDirichletAllocation as LDA\n",
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "\n",
    "from mlxtend.plotting import plot_decision_regions\n",
    "\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>14.23</td>\n",
       "      <td>1.71</td>\n",
       "      <td>2.43</td>\n",
       "      <td>15.6</td>\n",
       "      <td>127</td>\n",
       "      <td>2.80</td>\n",
       "      <td>3.06</td>\n",
       "      <td>0.28</td>\n",
       "      <td>2.29</td>\n",
       "      <td>5.64</td>\n",
       "      <td>1.04</td>\n",
       "      <td>3.92</td>\n",
       "      <td>1065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>13.20</td>\n",
       "      <td>1.78</td>\n",
       "      <td>2.14</td>\n",
       "      <td>11.2</td>\n",
       "      <td>100</td>\n",
       "      <td>2.65</td>\n",
       "      <td>2.76</td>\n",
       "      <td>0.26</td>\n",
       "      <td>1.28</td>\n",
       "      <td>4.38</td>\n",
       "      <td>1.05</td>\n",
       "      <td>3.40</td>\n",
       "      <td>1050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>13.16</td>\n",
       "      <td>2.36</td>\n",
       "      <td>2.67</td>\n",
       "      <td>18.6</td>\n",
       "      <td>101</td>\n",
       "      <td>2.80</td>\n",
       "      <td>3.24</td>\n",
       "      <td>0.30</td>\n",
       "      <td>2.81</td>\n",
       "      <td>5.68</td>\n",
       "      <td>1.03</td>\n",
       "      <td>3.17</td>\n",
       "      <td>1185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>14.37</td>\n",
       "      <td>1.95</td>\n",
       "      <td>2.50</td>\n",
       "      <td>16.8</td>\n",
       "      <td>113</td>\n",
       "      <td>3.85</td>\n",
       "      <td>3.49</td>\n",
       "      <td>0.24</td>\n",
       "      <td>2.18</td>\n",
       "      <td>7.80</td>\n",
       "      <td>0.86</td>\n",
       "      <td>3.45</td>\n",
       "      <td>1480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>13.24</td>\n",
       "      <td>2.59</td>\n",
       "      <td>2.87</td>\n",
       "      <td>21.0</td>\n",
       "      <td>118</td>\n",
       "      <td>2.80</td>\n",
       "      <td>2.69</td>\n",
       "      <td>0.39</td>\n",
       "      <td>1.82</td>\n",
       "      <td>4.32</td>\n",
       "      <td>1.04</td>\n",
       "      <td>2.93</td>\n",
       "      <td>735</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   0      1     2     3     4    5     6     7     8     9     10    11    12  \\\n",
       "0   1  14.23  1.71  2.43  15.6  127  2.80  3.06  0.28  2.29  5.64  1.04  3.92   \n",
       "1   1  13.20  1.78  2.14  11.2  100  2.65  2.76  0.26  1.28  4.38  1.05  3.40   \n",
       "2   1  13.16  2.36  2.67  18.6  101  2.80  3.24  0.30  2.81  5.68  1.03  3.17   \n",
       "3   1  14.37  1.95  2.50  16.8  113  3.85  3.49  0.24  2.18  7.80  0.86  3.45   \n",
       "4   1  13.24  2.59  2.87  21.0  118  2.80  2.69  0.39  1.82  4.32  1.04  2.93   \n",
       "\n",
       "     13  \n",
       "0  1065  \n",
       "1  1050  \n",
       "2  1185  \n",
       "3  1480  \n",
       "4   735  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wine = pd.read_csv(\"https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data\", header = None)\n",
    "wine.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "names = \"\"\"Class,Alcohol,Malic acid,Ash,Alcalinity of ash,Magnesium,\n",
    "Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins,\n",
    "Color intensity,Hue,OD280/OD315 of diluted wines,Proline\"\"\".replace(\"\\n\", \"\").split(\",\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style>\n",
       "    .dataframe thead tr:only-child th {\n",
       "        text-align: right;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Class</th>\n",
       "      <th>Alcohol</th>\n",
       "      <th>Malic acid</th>\n",
       "      <th>Ash</th>\n",
       "      <th>Alcalinity of ash</th>\n",
       "      <th>Magnesium</th>\n",
       "      <th>Total phenols</th>\n",
       "      <th>Flavanoids</th>\n",
       "      <th>Nonflavanoid phenols</th>\n",
       "      <th>Proanthocyanins</th>\n",
       "      <th>Color intensity</th>\n",
       "      <th>Hue</th>\n",
       "      <th>OD280/OD315 of diluted wines</th>\n",
       "      <th>Proline</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>14.23</td>\n",
       "      <td>1.71</td>\n",
       "      <td>2.43</td>\n",
       "      <td>15.6</td>\n",
       "      <td>127</td>\n",
       "      <td>2.80</td>\n",
       "      <td>3.06</td>\n",
       "      <td>0.28</td>\n",
       "      <td>2.29</td>\n",
       "      <td>5.64</td>\n",
       "      <td>1.04</td>\n",
       "      <td>3.92</td>\n",
       "      <td>1065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>13.20</td>\n",
       "      <td>1.78</td>\n",
       "      <td>2.14</td>\n",
       "      <td>11.2</td>\n",
       "      <td>100</td>\n",
       "      <td>2.65</td>\n",
       "      <td>2.76</td>\n",
       "      <td>0.26</td>\n",
       "      <td>1.28</td>\n",
       "      <td>4.38</td>\n",
       "      <td>1.05</td>\n",
       "      <td>3.40</td>\n",
       "      <td>1050</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>13.16</td>\n",
       "      <td>2.36</td>\n",
       "      <td>2.67</td>\n",
       "      <td>18.6</td>\n",
       "      <td>101</td>\n",
       "      <td>2.80</td>\n",
       "      <td>3.24</td>\n",
       "      <td>0.30</td>\n",
       "      <td>2.81</td>\n",
       "      <td>5.68</td>\n",
       "      <td>1.03</td>\n",
       "      <td>3.17</td>\n",
       "      <td>1185</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>14.37</td>\n",
       "      <td>1.95</td>\n",
       "      <td>2.50</td>\n",
       "      <td>16.8</td>\n",
       "      <td>113</td>\n",
       "      <td>3.85</td>\n",
       "      <td>3.49</td>\n",
       "      <td>0.24</td>\n",
       "      <td>2.18</td>\n",
       "      <td>7.80</td>\n",
       "      <td>0.86</td>\n",
       "      <td>3.45</td>\n",
       "      <td>1480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>13.24</td>\n",
       "      <td>2.59</td>\n",
       "      <td>2.87</td>\n",
       "      <td>21.0</td>\n",
       "      <td>118</td>\n",
       "      <td>2.80</td>\n",
       "      <td>2.69</td>\n",
       "      <td>0.39</td>\n",
       "      <td>1.82</td>\n",
       "      <td>4.32</td>\n",
       "      <td>1.04</td>\n",
       "      <td>2.93</td>\n",
       "      <td>735</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   Class  Alcohol  Malic acid   Ash  Alcalinity of ash  Magnesium  \\\n",
       "0      1    14.23        1.71  2.43               15.6        127   \n",
       "1      1    13.20        1.78  2.14               11.2        100   \n",
       "2      1    13.16        2.36  2.67               18.6        101   \n",
       "3      1    14.37        1.95  2.50               16.8        113   \n",
       "4      1    13.24        2.59  2.87               21.0        118   \n",
       "\n",
       "   Total phenols  Flavanoids  Nonflavanoid phenols  Proanthocyanins  \\\n",
       "0           2.80        3.06                  0.28             2.29   \n",
       "1           2.65        2.76                  0.26             1.28   \n",
       "2           2.80        3.24                  0.30             2.81   \n",
       "3           3.85        3.49                  0.24             2.18   \n",
       "4           2.80        2.69                  0.39             1.82   \n",
       "\n",
       "   Color intensity   Hue  OD280/OD315 of diluted wines  Proline  \n",
       "0             5.64  1.04                          3.92     1065  \n",
       "1             4.38  1.05                          3.40     1050  \n",
       "2             5.68  1.03                          3.17     1185  \n",
       "3             7.80  0.86                          3.45     1480  \n",
       "4             4.32  1.04                          2.93      735  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "wine.columns = names\n",
    "wine.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Unique classes:  [1 2 3]\n"
     ]
    }
   ],
   "source": [
    "print(\"Unique classes: \", wine[\"Class\"].unique())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Let's see the class distribution"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x112fbd278>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x112fbdb70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "wine.Class.value_counts().sort_index().plot(kind = \"bar\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = wine.iloc[:, 1:].values, wine.iloc[:, 0].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train X dimension: (124, 13), Test X dimension: (54, 13)\n"
     ]
    }
   ],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 0)\n",
    "print(\"Train X dimension: %s, Test X dimension: %s\" % (X_train.shape, X_test.shape))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "scaler = StandardScaler()\n",
    "X_train_std = scaler.fit_transform(X_train)\n",
    "X_test_std = scaler.transform(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Dim of X_train:  (124, 13)\n",
      "Dim of X_train_cov:  (13, 13)\n"
     ]
    }
   ],
   "source": [
    "X_train_cov = np.cov(X_train_std.T)\n",
    "# cov function considers: each row of m represents a variable, \n",
    "# and each column a single observation of all those variables.\n",
    "# resulting output will be d x d matrix, where d is no of the rows.\n",
    "print(\"Dim of X_train: \", X_train_std.shape)\n",
    "print(\"Dim of X_train_cov: \", X_train_cov.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Eigen values: [ 4.8923083   2.46635032  1.42809973  1.01233462  0.84906459  0.60181514\n",
      "  0.52251546  0.08414846  0.33051429  0.29595018  0.16831254  0.21432212\n",
      "  0.2399553 ]\n",
      "Eigen vectors, shape:  (13, 13)\n"
     ]
    }
   ],
   "source": [
    "eigen_vals, eigen_vectors = np.linalg.eig(X_train_cov)\n",
    "print(\"Eigen values: %s\" % (eigen_vals))\n",
    "print(\"Eigen vectors, shape: \", eigen_vectors.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x11750d128>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nJyeHjRs3Rk4Qq1ev5pZbbuHrr79m586d9O3bN+3+Bx98MP369ePFF19k0KBB/OUvf+Guu+7i9ddf\nZ+3atZx66qkA/PDDD3Tt2rXQsTt37mTRokWFzkC+//57AI4++mgmTZpEr169eO6556hTp05in2HD\nhgHQvXt3vvnmG77++utC7W7evJkhQ4awZcsWfvjhh2Kvuf/5z3/OQQcdRMuWLRPfzufOncvcuXNp\n3759IsYPP/yQHTt2cN5553H44YcDQXdVKkOGDGHWrFn06tWLmTNnctlll5X4vg4ePJisrKx92kr3\nOs455xwOPfRQDj30UI466ig+++wzXnvtNQYPHky9evUAEu/ZvHnzCnUPfvPNN+zcubPQGSVAnz59\nEse4OzfddBMLFy7koIMO4pNPPimxO/TNN99MJL2TTjqJ448/nvXr19OmTZu0x+2vTN4odz9wg7vv\nLemyLDMbDYwGaNy4cTmEJj9Vum/6ccnJydmvvtpDDz008figgw5KLB900EGF+oqT1xc9pmC/5L/l\n4q5FHz58OM8//zxt27Zl+vTpLFiwoMQYhw4dyoMPPkidOnXIzc2lVq1auDt9+vThqaeeKva4vXv3\ncuSRRya+jRb13nvvUbduXT799NNC64v+nyy6fOWVV3LdddcxYMAAFixYwMSJE1O2n/w+uXvi9403\n3sivfvWrQvsWnKmVZMCAAdx0001s27aN5cuX07t3byD9+1qjRo2UbaV7HcmxZ2VlpR032Lt3L4sX\nLy7xm3xyHDNmzGDr1q0sX76catWqkZ2dXeGqEGTyKqZcYKaZbQQGAQ+b2c9T7ejuU909191z69cv\nVTlzOYD07t2b77//nqlTpybWrVq1ijfeeIPTTjuNWbNm8eOPP7J161YWLlxI586dyzyGo48+mnXr\n1rF3716ee+65lPvs2LGDY489lj179jBjxozE+lq1arFjx46Ux/To0YMVK1bw6KOPMnToUABOPvlk\n3nrrLTZs2AAE/fFFr9g64ogjaNKkCU8//TQQfDivXLkSgCVLlvDKK6/w7rvvcs899/Dxxx8njisY\no3nzzTepXbs2tWvXLtTu9u3badCgAQB//OMfo705ob59+/L4448nxks++eQTPv/8c7p3787zzz/P\n7t272bFjBy+++GLK42vWrEmnTp24+uqr6d+/f+LMoLj3NZ3Svo7evXvz9NNP8+WXXwIkupjOPPNM\nHnjggcR+xSXkos991FFHUa1aNebPn8///m9QjTvd38Fpp52WeG3r169n06ZNNG/evMTn2l8ZSxDu\n3sTds909G5gNXObuz2cqHqn8zIznnnuOefPm0axZM3Jycrjxxhs55phjOO+88xIDi7179+auu+7i\nmGOOKfMYJk+eTP/+/TnllFMS3VZF3XHHHXTp0oVTTz2Vk046KbF+6NCh3H333bRv3z4xOF4gKyuL\n/v3788orryQGqOvXr8/06dMZNmwYbdq0oWvXrokB6GQzZszgscceo23btuTk5PDCCy/w/fffM2rU\nKB5//HGOO+447r33XkaOHJn4ll+9enXat2/PmDFjeOyxx/Zpc+LEiQwePJiOHTsmuluiOvPMM7nw\nwgvp2rUrrVu3ZtCgQezYsYMOHTowZMgQ2rZty1lnnUWnTsX3PA8ZMoQ//elPDBkypMT3NZ3Svo6c\nnBxuvvlmevToQdu2bbnuuusA+P3vf8+yZcto06YNLVu2ZMqUKSW2ddFFF7Fs2TJat27NE088kYi5\nbt26nHrqqbRq1Ypx48YVOuayyy5j7969tG7dmiFDhjB9+vRCZzplzQr+IMq8YbOngJ5APeAzYAJQ\nDcDdpxTZdzrwkruX2D+Qm5vrmjCoYlq3bh0tWrTIdBjyE/Xs2ZN77rmH3NzcTIci+ynV/0UzW+7u\npfpHjfMqpmGl2Hd4XHGIiMj+UTVXESkkyqC5HBhUakNERFJSghARkZSUIEREJCUlCBERSUmD1BKb\n7PF/KdP2Nk4+p8R9srKyEiUwILi3YH8qdw4fPjxlXaRkt912G927dy+TiqtxXVpaljHGIS8vj08/\n/ZSzzz4bCEpxr127NuPVViWgBCFVymGHHRbpLtayMGnSpHJ5nv31448/VogY8/PzOfjg1B81eXl5\nLFu2LJEgBgwYUGwNJil/6mKSKm/79u00b948UT562LBhPProo0BQtuHaa68lJyeH008/na1bt+5z\n/KRJk+jUqROtWrVi9OjRibuNC8pxA2RnZzNhwoRE6eaCO5p37drFyJEj6dy5M+3bt0+UdN69ezdD\nhw6lRYsWnHfeeezevXuf501X5nvs2LHk5uaSk5NTqFx2dnY2N9xwAx06dODpp58uFGNxr6Nnz57c\ncMMNdO7cmRNPPJE33ngDCBLMr3/9a1q1akWbNm0SpSSWL19Ojx496NixI3379mXLli37xF60xPaS\nJUvo2rUr7du355RTTuGDDz7ghx9+4LbbbmPWrFm0a9eOWbNmFSrFvXHjRnr37k2bNm04/fTT2bRp\nU4R/bSlLShBSpezevZt27dolfmbNmkXt2rV58MEHGT58ODNnzuSrr75KlIXetWsXubm5rFmzhh49\nenD77bfv0+YVV1zB0qVLWb16Nbt37+all15K+dz16tVjxYoVjB07NjET2m9+8xt69+7NkiVLmD9/\nPuPGjWPXrl384Q9/4PDDD2fdunXcfvvtLF++fJ/2zjjjDN555x127doFkCjzXdDusmXLWLVqFa+/\n/jqrVq1KHFe3bl1WrFiR2DfK68jPz2fJkiXcf//9ifdg6tSpbNy4kby8PFatWsVFF13Enj17uPLK\nK5k9ezbLly9n5MiR3HzzzSnfj4IS2/fddx8nnXQSb7zxBu+++y6TJk3ipptu4pBDDmHSpEkMGTKE\nvLy8QmUzICikd8kllySe+6qrrkr5PBIfdTFJlVJcF1OfPn14+umnufzyyxPF6iCoxFrwwfSLX/yC\n888/f59j58+fz1133cW3337Ltm3byMnJ4dxzz91nv4JjO3bsyLPPPgsEpa3nzJmTSBjfffcdmzZt\nYuHChYkPvDZt2qQs11xcmW+AP//5z0ydOpX8/Hy2bNnC2rVrE20U/aCN8jqSYy+Yf2DevHmMGTMm\n0T1Up04dVq9ezerVq+nTpw8QnGUUV3MqucT29u3bueSSS/jwww8xM/bs2ZPymGRvv/124n28+OKL\nuf7660s8RsqWEoQcEPbu3cu6des4/PDD+eqrr2jYsGHK/YqWtf7uu++47LLLWLZsGY0aNWLixInF\nlmQuKJqWXBra3XnmmWf2u+JmqjLfH3/8Mffccw9Lly7lZz/7GcOHDy8UU6rS1iW9jlSxp+Lu5OTk\n8Pbbb5cYe3Ict956a2LeiY0bN9KzZ88oL18yTF1MckD4z//8T1q0aMGTTz7JiBEjEt9g9+7dm+ij\nf/LJJ+nWrVuh4wo+ROvVq8fOnTtLPd9E3759eeCBBxL9/e+++y4QTMTz5JNPAsFEN8ldRMlSlfn+\n5ptvqFGjBrVr1+azzz7jlVdeKTGO/Xkdffr04ZFHHkkkjG3bttG8eXO2bt2aSBB79uxhzZo1JbaV\nXFY7eUa3dKWtTznlFGbOnAkEFWlPO+20Ep9HypbOICQ2US5LLWsFYxAF+vXrx4gRI5g2bRpLliyh\nVq1adO/enTvvvJPbb7+dGjVqsGTJEu68806OOuqoxDwIBY488khGjRpFq1atOOaYY9KWoE7l1ltv\n5ZprrqFNmzbs3buXJk2a8NJLLzF27FhGjBhBixYtaNGiRbFTpRaU+Z4+fXpivoK2bdvSvn17Tjrp\nJBo1apSYUS6d/Xkdl156aWK2smrVqjFq1CiuuOIKZs+ezVVXXcX27dvJz8/nmmuuIScn/QRR119/\nPZdccgl33nkn55zzf38XvXr1YvLkybRr144bb7yx0DEPPPAAI0aM4O6776Z+/fr813/9V4kxS9mK\nrdx3XFTuu+KqjOW+a9asmZi4RqSqKKty3+piEhGRlJQg5ICmsweR4ilBSJmqbF2WIlVNWf4fVIKQ\nMlO9enW+/PJLJQmRDHF3vvzyS6pXr14m7ekqJikzDRs2ZPPmzSnLVYhI+ahevXqx9/mUlhKElJlq\n1arRpEmTTIchImUkti4mM3vczD43s9XFbL/IzFaZ2XtmtsjM2sYVi4iIlF6cYxDTgX5ptn8M9HD3\n1sAdwNQYYxERkVKKrYvJ3ReaWXaa7YuSFhcDZdNpJiIiZaKiXMX0r0DJBWVERKTcZHyQ2sx6ESSI\nbmn2GQ2MBmjcuHE5RSYicmDL6BmEmbUBpgED3f3L4vZz96nunuvuufXr1y+/AEVEDmAZSxBm1hh4\nFrjY3ddnKg4REUktti4mM3sK6AnUM7PNwASgGoC7TwFuA+oCD4eTtOSXttKgiIjEp8QEYWbVgLFA\n93DV68AUd087Z6C7Dyth+6XApRHjFBGRchblDOIPBN/8Hw6XLw7X6cNdRKQKi5IgOrl78l3Or5nZ\nymL3FhGRKiHKIPWPZtasYMHMmgI/xheSiIhUBFHOIMYB883s74ABxwMjYo1KREQyrsQE4e7/Y2Yn\nAM3DVR+4+/fxhiUiIplWbIIws97u/pqZnV9k07+YGe7+bMyxiYhIBqU7g+gBvAacm2KbE9zkJiIi\nVVSxCcLdJ4QPJ7n7x8nbzEyzwoiIVHFRrmJ6JsW62WUdiIiIVCzpxiBOAnKA2kXGIY4AymZGbBER\nqbDSjUE0B/oDR1J4HGIHMCrOoEREJPPSjUG8ALxgZl3d/e1yjElERCqAKDfKvWtmlxN0NyW6ltx9\nZGxRiYhIxkUZpP5v4BigL0El14YE3UwiIlKFRUkQ/+LutwK73P2PwDlAl3jDEhGRTIuSIArmffja\nzFoBtYGj4gtJREQqgihjEFPN7GfALcAcoCbBbHAiIlKFRSnWNy18uBBoGm84IiJSUaTtYjKzLDOr\nl7R8iJmNMrN18YcmIiKZVGyCMLOhwDZglZm9bmZnAn8HzgYuKqf4REQkQ9KdQdwCdHT344BrgReB\nse5+nruvKKlhM3vczD43s9XFbDcz+72ZbTCzVWbWYb9egYiIxCJdgvjB3TcAhAnhQ3d/sRRtTwf6\npdl+FnBC+DMa+EMp2hYRkZilG6Q+ysyuS1o+MnnZ3e9L17C7LzSz7DS7DASecHcHFpvZkWZ2rLtv\niRC3iIjELF2CeBSolWb5p2oA/CNpeXO4TglCRH6yJ9/ZxAt5n8TSdsvjjmDCuTmxtF2RpCvWd3t5\nBpKOmY0m6IaicePGGY5GRCqDF/I+Ye2Wb2h57BGZDqXSinKjXFw+ARolLTcM1+3D3acCUwFyc3M9\n/tBEpLzE9U2/IDnM+lXXMm/7QBGl1EZc5gC/DK9mOhnYrvEHkQNPwTf9stby2CMY2K5Bmbd7IInt\nDMLMngJ6AvXMbDMwAagG4O5TgJcJ7qnYAHwLjIgrFhGp2PRNv2IqMUGY2dHAvwPHuftZZtYS6Oru\nj6U7zt2HlbDdgctLE6yIZEacA74aJ6i4onQxTQdeBY4Ll9cD18QVkIhUPHF1A4G6giqyKF1M9dz9\nz2Z2I4C755vZjzHHJSL7QQO+UpainEHsMrO6gAMUDCjHGpWI7BcN+EpZinIGcR3BFUfNzOwtoD4w\nKNaoRGS/6Zu+lJUo80GsMLMeQHPAgA/cfU8Jh4lIGnF3BYmUhRK7mMzscqCmu69x99VATTO7LP7Q\nRKoudQVJZRCli2mUuz9UsODuX5nZKODh+MISqfrUFSQVXZRB6iwzs4IFM8sCDokvJBERqQiinEH8\nFZhlZo+Ey78K14lUabo5TA50URLEDQRJYWy4/DdgWmwRiZRSXB/k73y8DYAuTeqUedsaK5DKIMpV\nTHsJZnvTjG9SIcVV1rlLkzoMbNeAC7uoxLwcmKLUYjoVmAgcH+5vBKWUmsYbmkh0GvAVKXtRupge\nA64FlgMqsSEicoCIkiC2u/srsUciIiIVSpQEMd/M7gaeBb4vWOnuK2KLSqok3T0sUrlESRBdwt+5\nSesc6F324UhVFtdgsq4IEolHlKuYepVHIHJg0GCySOURacpRMzsHyAGqF6xz90lxBSUiIpkXpVjf\nFGAIcCXBJa6DCS55FRGRKixKLaZT3P2XwFfufjvQFTgx3rBERCTToiSI3eHvb83sOGAPcGyUxs2s\nn5l9YGYbzGx8iu21zexFM1tpZmvMbET00EVEJE5RxiBeMrMjgbuBFQRXMJVYiyms+voQ0AfYDCw1\nsznuvjZpt8uBte5+rpnVBz4wsxnu/kNpX4iUDRWoE5ECJZ5BuPsd7v61uz9DMPZwkrvfGqHtzsAG\nd/97+IE/ExhYtHmgVlhOvCawDcgv1SuQMhXXRDagy1FFKptizyDMrLe7v2Zm56fYhrs/W0LbDYB/\nJC1v5v/uqSjwIMF8158CtYAhYXFAySBdiioikL6LqQfwGnBuim1OcGf1T9UXyCO46a4Z8Dcze8Pd\nC32FNbPRwGiAxo1VWVNEpDwUmyDcfYKZHQS84u5/3o+2PwEaJS03DNclGwFMdncHNpjZx8BJwJIi\nsUwFpgLk5ub6fsQiIiKllHYMIuzuuX4/214KnGBmTczsEGAoQXdSsk3A6QBmdjTQHPj7fj6fiIiU\noShXMc0zs18Ds4BdBSvdfVu6g9w938yuAF4FsoDH3X2NmY0Jt08B7gCmm9l7BDfh3eDuX+zfSxER\nkbIUJUEMCX9fnrTOgRInDHL3l4GXi6ybkvT4U+DMCDGIiEg5i1Ksr0l5BCIiIhVL1GJ9rYCWFC7W\n90RcQUnJNLeCiMQtSrG+CcAD4U8v4C5gQMxxSQniuqFNN7OJSIEoZxCDgLbAu+4+Irza6E/xhiVR\n6IY2EYlTpGJ94eWu+WZ2BPA5he9vEBGRKijKGcSysFjfo8ByYCfwdqxRiYhIxkW5iumy8OEUM/sr\ncIS7r4o3LBERybRiu5jMbK2Z3WJmzQrWuftGJQcRkQNDujGIYUANYK6ZLTGza8MJg0RE5ABQbIJw\n95XufqO7NwOuAhoDi81svpmNKrcIRUQkI6JcxYS7L3b3a4FfAkcSzOMgIiJVWImD1GbWiaC76QLg\nY+AR4OmY4xIRkQxLN6PcvxMU6ttGMF3oqe6+ubwCExGRzEp3BvEd0M/dPyyvYKoi1UwSkcoq3SD1\nJCWHn041k0SksopUzVV+GtVMEpHKKNJVTCIicuBJN0jdId2B7r6i7MMREZGKIl0X073h7+pALrCS\nYN7oNsAyQH0mIiJVWLpB6l7u3gvYAnRw91x37wi0B8r+shwREalQooxBNHf39woW3H010CJK42bW\nz8w+MLMNZja+mH16mlmema0xs9ejhS0iInGLchXTKjObxv/NIncRUGJFVzPLAh4C+gCbgaVmNsfd\n1ybtcyTwMMH9FpvM7KjSvgAREYlHlDOIEcAa4OrwZ224riSdgQ3u/nd3/4HgbuyBRfa5EHjW3TcB\nuPvnUQMXEZF4RZkw6DszmwK87O4flKLtBsA/kpY3A12K7HMiUM3MFgC1gN+5+xOleA4REYlJiWcQ\nZjYAyAP+Gi63M7M5ZfT8BwMdgXOAvsCtZnZiihhGm9kyM1u2devWMnpqERFJJ0oX0wSC7qKvAdw9\nD2gS4bhPgEZJyw3Z9+qnzcCr7r7L3b8AFgJtizbk7lPDq6hy69evH+GpRUTkp4qSIPa4+/Yi6zzC\ncUuBE8ysiZkdAgwFip55vAB0M7ODzexwgi6odRHaFhGRmEW5immNmV0IZJnZCQSzyy0q6SB3zzez\nK4BXgSzgcXdfY2Zjwu1T3H2dmf2V4KqovcC08DJaERHJsCgJ4krgZuB74CmCD/w7ojTu7i8DLxdZ\nN6XI8t3A3VHai5PKcouIFBblKqZvCRLEzfGHkzkFZbnL+sNcZblFpLKKMuXoicCvgezk/d29d3xh\nZYbKcouI/J8oXUxPA1OAacCP8YYjIiIVRZQEke/uf4g9EhERqVCiXOb6opldZmbHmlmdgp/YIxMR\nkYyKcgZxSfh7XNI6B5qWfTgiIlJRRLmKKcpd0yIiUsWkm3K0t7u/Zmbnp9ru7s/GF5aIiGRaujOI\nHsBrwLkptjmgBCEiUoUVmyDcfUL4O8rcDyIiUsVEGaTGzM4BcoDqBevcfVJcQYmISOZFmQ9iCjCE\noCaTAYOB42OOS0REMizKfRCnuPsvga/c/XagK8FMcCIiUoVFSRC7w9/fmtlxwB7g2PhCEhGRiiDK\nGMRLZnYkQUnuFQRXME2LNSoREcm4KDfKFcz98IyZvQRUTzHDnIiIVDHpbpRLeYNcuE03yomIVHHp\nziBS3SBXQDfKiYhUcelulNMNciIiB7Ao90HUNbPfm9kKM1tuZr8zs7rlEZyIiGROlMtcZwJbgQuA\nQeHjWVEaN7N+ZvaBmW0ws/Fp9utkZvlmNihKuyIiEr8oCeJYd7/D3T8Of+4Eji7pIDPLAh4CzgJa\nAsPMrGUx+/0WmFu60EVEJE5REsRcMxtqZgeFP/8PeDXCcZ2BDe7+d3f/geBMZGCK/a4EngE+jxy1\niIjELkqCGAU8CXwf/swEfmVmO8zsmzTHNQD+kbS8OVyXYGYNgPMAzXktIlLBRLlRrlaMz38/cIO7\n7zWzYnf2RwYFAAANCElEQVQys9HAaIDGjRvHGI6IiBSIchXTvxZZzjKzCRHa/gRolLTcMFyXLBeY\naWYbCQbAHzaznxdtyN2nunuuu+fWr18/wlOLiMhPFaWL6XQze9nMjjWzVsBiIMpZxVLgBDNrYmaH\nAEOBOck7uHsTd89292xgNnCZuz9fupcgIiJxiNLFdKGZDQHeA3YBF7r7WxGOyzezKwgGtLOAx919\njZmNCbdP+Wmhi4hInMzd0+9gdgLwR4IE0QJYC1zn7t/GH96+cnNzfdmyZaU+Lnv8X37yc2+cfM5P\nbkNEJBPMbLm755bmmChdTC8Ct7r7r4AewIcE3UciIlKFRZkPorO7fwPgwenGvWb2YrxhiYhIphV7\nBmFm1wO4+zdmNrjI5uFxBiUiIpmXrotpaNLjG4ts6xdDLCIiUoGkSxBWzONUyyIiUsWkSxBezONU\nyyIiUsWkG6RuG9ZaMuCwpLpLBlSPPTIREcmodDPKZZVnICIiUrFEuQ9CREQOQEoQIiKSkhKEiIik\npAQhIiIpKUGIiEhKShAiIpKSEoSIiKSkBCEiIikpQYiISEpKECIikpIShIiIpKQEISIiKcWaIMys\nn5l9YGYbzGx8iu0XmdkqM3vPzBaZWds44xERkehiSxBmlgU8BJwFtASGmVnLIrt9DPRw99bAHcDU\nuOIREZHSifMMojOwwd3/7u4/ADOBgck7uPsid/8qXFwMNIwxHhERKYU4E0QD4B9Jy5vDdcX5V+CV\nGOMREZFSSDejXLkxs14ECaJbMdtHA6MBGjduXI6RiYgcuOI8g/gEaJS03DBcV4iZtQGmAQPd/ctU\nDbn7VHfPdffc+vXrxxKsiIgUFucZxFLgBDNrQpAYhgIXJu9gZo2BZ4GL3X19jLHEJnv8X8qknY2T\nzymTdkREykpsCcLd883sCuBVIAt43N3XmNmYcPsU4DagLvCwmQHku3tuXDGJiEh0sY5BuPvLwMtF\n1k1JenwpcGmcMYiIyP7RndQiIpKSEoSIiKSkBCEiIikpQYiISEpKECIikpIShIiIpKQEISIiKSlB\niIhIShWiWJ/sSyU8RCTTdAYhIiIpKUGIiEhKShAiIpKSEoSIiKSkQeoDUFkMgGvwW6TqU4KQMqMr\nr0SqFnUxiYhISkoQIiKSkrqYpMJT15VIZihByAFNA/YixVMXk4iIpBTrGYSZ9QN+B2QB09x9cpHt\nFm4/G/gWGO7uK+KMSaQyU3eblKfYEoSZZQEPAX2AzcBSM5vj7muTdjsLOCH86QL8IfwtIuWoMiae\nuGKujO9FXOI8g+gMbHD3vwOY2UxgIJCcIAYCT7i7A4vN7EgzO9bdt8QYl4iUI33gVl5xJogGwD+S\nljez79lBqn0aAEoQUqnpQ1GqAgu+vMfQsNkgoJ+7XxouXwx0cfcrkvZ5CZjs7m+Gy/8D3ODuy4q0\nNRoYHS42Bz6IJWioB3wRU9txqGzxQuWLubLFC4q5PFS2eAGau3ut0hwQ5xnEJ0CjpOWG4brS7oO7\nTwWmlnWARZnZMnfPjft5ykplixcqX8yVLV5QzOWhssULQcylPSbOy1yXAieYWRMzOwQYCswpss8c\n4JcWOBnYrvEHEZGKIbYzCHfPN7MrgFcJLnN93N3XmNmYcPsU4GWCS1w3EFzmOiKueEREpHRivQ/C\n3V8mSALJ66YkPXbg8jhjKKXYu7HKWGWLFypfzJUtXlDM5aGyxQv7EXNsg9QiIlK5qdSGiIikpARB\nUBLEzD4wsw1mNj7T8ZTEzBqZ2XwzW2tma8zs6kzHFIWZZZnZu+HlzRVeeOPmbDN738zWmVnXTMdU\nEjO7NvybWG1mT5lZ9UzHlMzMHjezz81sddK6Omb2NzP7MPz9s0zGWFQxMd8d/l2sMrPnzOzITMZY\nVKqYk7b9m5m5mdUrqZ0DPkEklQQ5C2gJDDOzlpmNqkT5wL+5e0vgZODyShAzwNXAukwHUQq/A/7q\n7icBbangsZtZA+AqINfdWxFcHDI0s1HtYzrQr8i68cD/uPsJwP+EyxXJdPaN+W9AK3dvA6wHbizv\noEownX1jxswaAWcCm6I0csAnCJJKgrj7D0BBSZAKy923FBQ1dPcdBB9cDTIbVXpm1hA4B5iW6Vii\nMLPaQHfgMQB3/8Hdv85sVJEcDBxmZgcDhwOfZjieQtx9IbCtyOqBwB/Dx38Efl6uQZUgVczuPtfd\n88PFxQT3cFUYxbzPAP8JXA9EGnxWgii+3EelYGbZQHvgncxGUqL7Cf4w92Y6kIiaAFuB/wq7xaaZ\nWY1MB5WOu38C3EPw7XALwX1FczMbVSRHJ93/9E/g6EwGsx9GAq9kOoiSmNlA4BN3Xxn1GCWISszM\nagLPANe4+zeZjqc4ZtYf+Nzdl2c6llI4GOgA/MHd2wO7qHhdH4WEffcDCZLbcUANM/tFZqMqnfDS\n90pzaaWZ3UzQ5Tsj07GkY2aHAzcBt5XmOCWIiOU+Khozq0aQHGa4+7OZjqcEpwIDzGwjQRdebzP7\nU2ZDKtFmYLO7F5yZzSZIGBXZGcDH7r7V3fcAzwKnZDimKD4zs2MBwt+fZzieSMxsONAfuMgr/v0C\nzQi+OKwM/x82BFaY2THpDlKCiFYSpEIJJ1p6DFjn7vdlOp6SuPuN7t7Q3bMJ3t/X3L1Cf7N1938C\n/zCz5uGq0ylcqr4i2gScbGaHh38jp1PBB9ZDc4BLwseXAC9kMJZIwsnQrgcGuPu3mY6nJO7+nrsf\n5e7Z4f/DzUCH8O+8WAd8gggHmgpKgqwD/uzuazIbVYlOBS4m+CaeF/6cnemgqqArgRlmtgpoB/x7\nhuNJKzzbmQ2sAN4j+P9doe74NbOngLeB5ma22cz+FZgM9DGzDwnOgiana6O8FRPzg0At4G/h/78p\naRspZ8XEXPp2Kv6ZkYiIZMIBfwYhIiKpKUGIiEhKShAiIpKSEoSIiKSkBCEiIikpQUhGmNmP4eWB\nq83s6fBOz1T7vbw/lTLN7Dgzmx1hv52lbLemmT1iZh+Z2XIzW2BmXUobX0ViZu10mbSkogQhmbLb\n3duFVUd/AMYkbwznKT/I3c/enyJ57v6puw8qq2CTTCMognaCu3ckmCa3xLLJFVw7gql/RQpRgpCK\n4A3gX8wsO5yX4wlgNdDIzDaaWb1w2zozezSc72CumR0GYGb/YmbzzGylma0ws2bh/qvD7cPN7IXw\n2/6HZjYhVRBmNs7MloY1/m9Psb0Z0AW4xd33Arj7x+7+l3D7deEZ0WozuyZclx3OGzDdzNab2Qwz\nO8PM3gpj6RzuN9HM/tvM3g7XjwrXmwVzD6w2s/fMbEi4vmf4egrmq5gR3j2NmXU0s9fDM5xXk8pY\nLDCz35rZkjCW08LqAZOAIeEZ3RAz65F0A+a7ZlarjP6dpbJxd/3op9x/gJ3h74MJSiuMBbIJqr2e\nnLTfRoJv6NkERdHahev/DPwifPwOcF74uDpBmetsYHW4bjhBddO6wGEEySe3SBxnEtx1bARfnF4C\nuheJeQDwXDGvpyPB3cs1gJrAGoIquwVxtw7bXQ48Hj7PQOD58PiJwMowvnoEFYaPAy4gmHsgi6DK\n6SbgWKAnsJ2gps5BBHfNdgOqAYuA+mG7Q4DHw8cLgHvDx2cD85LenweTXsuLwKnh45rAwZn+e9FP\nZn4OTpEzRMrDYWaWFz5+g6C21HHA/7r74mKO+djdC45ZDmSH324buPtzAO7+HUD4ZTrZ39z9y3Db\nswQfpsuStp8Z/rwbLtcETgAWRnw93QiSx66k5ziNoM7Qx+7+Xrh+DcHkOG5m7xEkkAIvuPtuYLeZ\nzSeYq6Qb8JS7/0hQ1O51oBPwDbDE3TeH7eaFbX0NtCIoAQFBYtmS9BwFhR2XF3nuZG8B95nZDODZ\ngueQA48ShGTKbndvl7wi/EDbleaY75Me/0jwbTuqojVlii4b8B/u/kiaNtYAbc0sK/zAjio57r1J\ny3sp/H+wpBjTtftj2JYBa9y9uOlRvy+y/z7cfbKZ/YXgLOMtM+vr7u+XEItUQRqDkErNgxn1NpvZ\nzwHM7NBirojqY8Hcx4cRzFj2VpHtrwIjLZhjAzNrYGZHFXmujwjOOm5P6u/PNrNzCM6Cfm5BJdUa\nwHnhutIYaGbVzawuQRfS0rCNIRbM512fYJa7JWna+ACob+H82WZWzcxySnjeHQSF5wiPaeZB9c/f\nhjGcVMrXIVWEEoRUBRcDV1lQdXURkKrG/RKC+TNWAc+4e3L3Eh7MvPYk8HbY9TObpA/NJJcSjAVs\nCAfBpxNMhrQifLyEYExkmru/m+L4dFYB8wmmsLzD3T8FngvXrwReA673NCWaPZg2dxDwWzNbCeRR\n8pwQ84GWBYPUwDXhoPgqYA+VYLY0iYequUqVZ8HELrnufkWmYymOmU0kGDC/J9OxiBTQGYSIiKSk\nMwgREUlJZxAiIpKSEoSIiKSkBCEiIikpQYiISEpKECIikpIShIiIpPT/Aas0WYHotnakAAAAAElF\nTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116bb6d68>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "explained_variance = eigen_vals / eigen_vals.sum()\n",
    "plt.bar(range(len(explained_variance)), explained_variance, label = \"Explained variance ratio\")\n",
    "plt.step(range(len(explained_variance)), np.cumsum(explained_variance)\n",
    "         , label = \"Commulative explained variance ratio\")\n",
    "plt.xlim(-1, 14)\n",
    "plt.ylim(0, 1.5)\n",
    "plt.xlabel(\"Principle Components\")\n",
    "plt.ylabel(\"Explained Variance Ratio\")\n",
    "plt.legend(loc = \"best\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.14669811,  0.50417079],\n",
       "       [-0.24224554,  0.24216889],\n",
       "       [-0.02993442,  0.28698484],\n",
       "       [-0.25519002, -0.06468718],\n",
       "       [ 0.12079772,  0.22995385],\n",
       "       [ 0.38934455,  0.09363991],\n",
       "       [ 0.42326486,  0.01088622],\n",
       "       [-0.30634956,  0.01870216],\n",
       "       [ 0.30572219,  0.03040352],\n",
       "       [-0.09869191,  0.54527081],\n",
       "       [ 0.30032535, -0.27924322],\n",
       "       [ 0.36821154, -0.174365  ],\n",
       "       [ 0.29259713,  0.36315461]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "k = 2\n",
    "W = eigen_vectors[:, :k]\n",
    "W"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train_pca = X_train_std.dot(W)\n",
    "X_test_pca = X_test_std.dot(W)\n",
    "\n",
    "X_combined_pca = np.vstack((X_train_pca, X_test_pca))\n",
    "y_combined = np.hstack((y_train, y_test))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x11763bc88>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116b27978>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "markers = [\"o\", \"x\", \"v\"]\n",
    "colors = [\"red\", \"blue\", \"green\"]\n",
    "for idx, cl in enumerate(np.unique(y_train)):\n",
    "    X_train_filtered = X_train_pca[y_train == cl, :]\n",
    "    plt.scatter(X_train_filtered[:, 0], X_train_filtered[:, 1], marker = markers[idx], color = colors[idx])\n",
    "\n",
    "plt.xlabel(\"PC1\")\n",
    "plt.ylabel(\"PC2\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy score on pca data: 0.9815\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x11763b9e8>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA3oAAAJcCAYAAACv0dbnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3X183HWZ7//3laT0xrZJm5JgC6VVI3Z1t1oMyukuutu1\nUrFd93dWZBc5FcmyC3JcWiuC8FuWXeTnnsUGPcJ62LpYQYuy4jEFC3SLFW8WoS0i0SpFgoVCExoy\nSUNpIenn98d3Jp2kM8lM8v3O9+71fDz6oJ1MJ5+5K/PO9flclznnBAAAAABIjqqwFwAAAAAA8BdB\nDwAAAAAShqAHAAAAAAlD0AMAAACAhCHoAQAAAEDCEPQAAAAAIGEIegBSzcy2mNnqEq7Xb2ZvqMSa\nJsLMfmlm7w3gdhvN7CEzO2hmX/D79rPf42tmdn0Qtz3K9wzk8Rrl+y0wM2dmNQHd/mfNbEPen//c\nzJ7Nvn7fEeDro6T3UZpln/c3hb0OAOkRyP9oAMBPZvaMpEZJA5IGJf1K0tcl3eqcOzqR23bOrSjx\netMn8n0qxTn31oBu+mJJByTNdD4MYDWzj0lqcc794URvayICfLxC4Zy7YcRFN0q6zDn3veyfJ3x/\nzewfJL3JOffRvO9b0vsoTHn/jgxKelnSFnmPTX/26++XdLWkd0g6LO/fmS8459rybuO9kn4g6Urn\n3D8HtM4FkjokTXLODQTxPQCkAxU9AHGx0jk3Q9Kpkj4v6TOSvhrukvwVVJXHJ6dK+tV4Ql7E71fS\nnSrpl2EvIkJWZn9os0TSOyVdI0lm9heS7pL3A6ST5QXCv5e0csTfXy3pJUn/o1ILBoDxIugBiBXn\nXG/2J+wfkbTazN4mSWY22cxuNLO9ZtZpZl8xs6m5v2dmf2ZmPzezPjP7rZmdnb18u5m1ZH//JjP7\noZn1mtkBM/tW3t8f2nZlZrVm9nUze9HMfmdm15hZVfZrHzOzH2fX0mNmHWZWtNphZs+Y2WfM7BeS\nXjazGjOba2bfyd5+h5l9Mu/6U81sY/a2d5vZFWb23Ijb+9O8x+QmM3s+++smM5uc/dp7zew5M/uU\nmXWZ2QtmdmGRNX5N3gfcK7JbAP+0xNv+jJntl3TbiNtbJOkrks7M3l4m78uzzOze7BbRn5nZG/P+\n3lvMbKuZvWRmvzGzc4us94/N7Im8P281s0fz/vwjM/tQgcfrH8zs29nn9mB2m+M78/5e0eelwBqm\n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\nvPNTX5V0oZktyzaKmGdmbylw2x82s1yI6pH3wWrYuarstq1vS/pc9szXqfLOOt3h0118RNJB85pt\nTDWvYcbbssFW2e99lZnNMrN58s5qFbNJ0jVmdqKZzZF3ZtGvdU70tjslnWxmJ5R4/XskvdnMLjCz\nSdlfzaOc7fqpvK2GZ0h6xDn3S2WrgjrW7KIcYz0vQ7Kvx3+XtN68Bi7V2YYak0dc9QR5WyJflDRg\nXiOR5bkvmtkHzWsQZPKC1qCko2Z2mpn9Sfb2Dsv7Icd4xoxskPRPZtZknj8ws3pJM+QFsxcl1ZjZ\n38s7w5fTKWlBdotqIZskrTGzhWY2XcfO9JU1KqAC77Xc93HZ2/1/zWuOMzP778Qfmtmt2autlrc9\n+e15v/67pA9kH7ORvi3pY2b2e2Y2Td7Z2nwzJL3knDts3hniv8r72ovyns83jLh+v6Te7Pv+0xO5\nzwDSgaAHIC42m9lBeT95v1reGZX8pgyfkbfN7eHs1qb/VPZMkfMat1woqVXeB+YfaniVIKdZ0s/M\n61bYJu+M1dMFrvc/5TVTeFpeRfGb8j7YT1j2w+0H5X2Q7JBX1dggb+ucJP2jvAYdHfLu439IOu7s\nV9b1knZI+oWkJyTtyl7mh4ne9oPy2v7vN7MDY13Zeecul8s7s/W8vC17/ywvKBW6/svZNf3SOfdq\n9uL/knemq6uMdeZub6znZaR18h6XR+VtL/5njfh/bvY+fVJeKOiR92G/Le8qTfKe4/7s2m9xzv1A\n3n3+fHYN++U1p7mq3Psk7z30bXnnAvvk/UBkqrxGI/dJelLelsPDGr4N8a7sf7vNbFeB2/13eecb\nH5L3WB2W954Zj8Dea/mcc/8hr5Pvx+W9vjrlvZ6/Z2bvlvfvxc3Zqn/uV5u8f3P+ssDtbZF0k7zX\n+VPZ/+a7VNI/Zv9N+3t5z0Pu7x6S14ToJ9ltwu+WFzKXyPv3615Jd/t25wEklrmJz70FAITEzC6R\ndJ5zjsYMAABgCBU9AIgRM3u9mS3Nbi07TV4L/u+GvS4AABAtNWNfBQAQISdI+j+SFkrKyDureEuo\nKwIAAJHD1k0AAAAASBi2bgIAAABAwsRr6+bmzZQfAQAIUHt/u+6bs1SnHT4r7KUAAApYubK0OZpU\n9AAAAAAgYQh6AABAklfNe3JP2KsAAPiBoAcAAIZC3tNnsm0TAJKAoAcAACQR8gAgSQh6AAAAAJAw\n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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x116c60390>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr = LogisticRegression(C = 1000, random_state = 123, penalty = \"l2\")\n",
    "lr.fit(X_train_pca, y_train)\n",
    "score = lr.score(X_test_pca, y_test)\n",
    "print(\"Accuracy score on pca data: %.4f\" % score)\n",
    "\n",
    "plt.figure(figsize = (15, 10))\n",
    "plot_decision_regions(X_combined_pca, y_combined, lr)\n",
    "plt.xlabel(\"PC1\")\n",
    "plt.ylabel(\"PC2\")\n",
    "plt.title(\"Decision region for the wine classification on PCA data\")\n",
    "plt.legend(loc = \"lower left\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA using SciKit (Linear Transformation)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy score on pca data: 0.9815\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x1194dbc50>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x108954908>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pca = PCA(n_components = 2)\n",
    "X_train_pca = pca.fit_transform(X_train_std)\n",
    "X_test_pca = pca.transform(X_test_std)\n",
    "\n",
    "X_combined_pca = np.vstack((X_train_pca, X_test_pca))\n",
    "y_combined = np.hstack((y_train, y_test))\n",
    "\n",
    "lr = LogisticRegression(C = 1000, random_state = 0, penalty = \"l2\")\n",
    "lr.fit(X_train_pca, y_train)\n",
    "test_pred= lr.predict(X_test_pca)\n",
    "score = accuracy_score(test_pred, y_test)\n",
    "print(\"Accuracy score on pca data: %.4f\" % score)\n",
    "\n",
    "plt.figure(figsize = (15, 10))\n",
    "plot_decision_regions(X_combined_pca, y_combined, lr)\n",
    "plt.xlabel(\"PC1\")\n",
    "plt.ylabel(\"PC2\")\n",
    "plt.title(\"Decision region for the wine classification on PCA hyperplane\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 2.59891628, -0.00484089],\n",
       "       [ 0.15819134,  2.26659577],\n",
       "       [-2.6372337 , -2.66488569],\n",
       "       [-2.52848449, -0.51846618],\n",
       "       [ 1.70922581,  0.91719459],\n",
       "       [-2.83057003, -0.41936129],\n",
       "       [-2.82251879, -1.99763147],\n",
       "       [ 1.36618015, -0.04639099],\n",
       "       [-2.46584868,  0.07932269],\n",
       "       [-2.28554906,  0.40096658]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train_pca[:10, :]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Explained Variance Ratio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PCA(copy=True, iterated_power='auto', n_components=None, random_state=None,\n",
       "  svd_solver='auto', tol=0.0, whiten=False)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pca = PCA(n_components = None)\n",
    "pca.fit(X_train_std)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x117764550>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nBRERSfj/J+o51cb/rR8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x10db91dd8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ratios = pca.explained_variance_ratio_\n",
    "plt.bar(range(len(ratios)), ratios, label = \"Explained variance ratio\")\n",
    "plt.step(range(len(ratios)), np.cumsum(ratios), label = \"Cumsum of Explained variance ratio\")\n",
    "plt.legend(loc = \"best\")\n",
    "plt.xlabel(\"Principle Components\")\n",
    "plt.ylabel(\"Explained variance ratio\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Kernel PCA for non linear transformation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy score on kpca data: 0.9815\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.text.Text at 0x119f16828>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA4QAAAJcCAYAAAChVGrNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8nGW99/HvL5M0TWg2mibdmwIBCkixNRWsctAqEJ62\neBQQFSlILYs8R1PrEZcjqOjL51gNnsMmVrEVBZWjmCIt1VYUF+x2RFoLDTTQvWnTLN2SZibX88d9\nT5ikk30mM8l83q9XXk3uuXPPNVs63/ld9+8y55wAAAAAAKknLdEDAAAAAAAkBoEQAAAAAFIUgRAA\nAAAAUhSBEAAAAABSFIEQAAAAAFIUgRAAAAAAUhSBEMCwY2arzGxBL/Y7amZnDMaYBsLMtprZZXE4\nbrGZ/dHMjpjZt2N9fP86fmRm98bj2N1cZ1zur26ur8TMnJmlx+n4XzCzZRE//6uZ7fKfv2+N4/Oj\nV6+jVGFml5nZ7kSPozfM7HUze2+ixwFgaIjLf14A0BMze11SsaSgpJCkf0paIekR51zbQI7tnCvv\n5X6jBnI9g8U5d36cDr1I0iFJuS4Gi9Ka2U2SFjrn3jnQYw1EHO+vhHDOfaPTpqWS7nTO/dr/ecC3\n18zukXSWc+6GiOvt1esokSL+joQkHZO0St59c9S//ApJX5T0VknN8v7OfNs5VxVxjMsk/V7SXc65\n/zeY4weAZECFEEAizXPO5UiaIumbkj4n6QeJHVJsxatqFCNTJP2zP2EwyW/XcDdF0tZEDyKJzPM/\n3Jkh6W2SviRJZnaNpF/I+6Bporzg+GVJ8zr9/gJJhyXdOFgDHgheewBijUAIIOGcc43+J/YfkrTA\nzC6QJDPLNLOlZrbTzA6Y2cNmlhX+PTO72sz+bmZNZvaamV3pb3/OzBb6359lZn8ws0YzO2RmP4v4\nfWdmZ/nf55nZCjM7aGZvmNmXzCzNv+wmM/uTP5Z6M6sxsy6rJ/50rc+Z2T8kHTOzdDMbb2b/4x+/\nxsz+LWL/LDNb7h97m5n9e+TUtMjpX/59cp+Z7fW/7jOzTP+yy8xst5l9xsxqzWyfmd3cxRh/JO+N\n8L/7Uw/f28tjf87M9kt6tNPxpkl6WNIl/vEaIi4uMLPf+FNT/2ZmZ0b83rlm9lszO2xmr5jZdV2M\n991m9lLEz781sw0RPz9vZu+Pcn/dY2Y/9x/bI/70yrdF/F6Xj0uUMWSZ2bf950ej/5zIirLfzf7j\neMTMdpjZrRGXFZrZ02bW4N/m5yOeZ58zsz3+771iZnMibsNj/uNzVFJA0otm9lqU2xswb4rpa/5x\nNpnZJP+y75o31bTJ3/4uf/uVkr4g6UP+Y/eivz3ydZRm3mviDf+5tcLM8vzLwlNmF5j3Wj1kZl/s\n5n6M2WstknNuj7wK4QVmZpK+I+lrzrll/t+YNufcH5xzn4gYy2mSrpH0SUmlkc+NbsZ/yuvLzMrM\n+xsViNjvAxH35T1m9qSZ/cx/XDab2fSIfbv7+xD+3cfMrEnSTT0dr9N4Z5nZX/3n3D4zu9/MRkRc\n7szsNjOr9vd5wL//wpd/3H8+15vZs2Y2pedHA8BQQiAEkDScc+sl7Zb0Ln/TNyWdLekiSWdJmiDv\nE36Z2Sx5n/x/VlK+pEslvR7lsF+TtEZSgbwqwX93cfX/LSlP0hmS/kVetSAyTL1d0iuSCiX9p6Qf\nRL5piuLDkv6PP7Y2SSslvejfhjmSPm3edDZJultSiX/d75N0Q+eDRfiipIvl3SfTJc2SXxHxjfVv\nxwRJt0h6wMwKOh/EOXeTpJ9I+k/n3Cjn3O96eezT5VWoFnU63jZJt0n6q3+8/IiLr5f0FXmPwauS\nvi61vxn/raSfSiry93vQzM6LcrtfkPeGvdDMMiRdKGm8meWYF8reJun5Lu6z+ZKekPdYVEm637/+\nNHX/uHS2VNJMSe/w74d/l/fYdlYraa6kXHnPoUozm+Ff9hl5z/Ex8ipWX5DkzOwcSXdKKvOr5leo\n0/PZOdcSMc15unPuTJ1qsbzn3lX+9X9c0nH/sg3yHtvT5d3nvzCzkc651ZK+Ieln/mMXLVjc5H+9\nW97zdJT8+zHCOyWdI+9+/LJ5HxJEE+vXmiTJD75XSfpffxyTJD3Zw699QNJReZXEZ+V9SNKdqK8v\n59wGSXWSLo/Y92Py/kaFXe1fT/j+f8rMMnr5PLzavy358l63XR4vyphDkirk3Z+X+Me/o9M+cyWV\nyXtdXSfv+Sczu1rec/QD8p6zz0t6vNt7CMDQ45zjiy+++Br0L3lvdt8bZfsL8oKJyTsn6MyIyy6R\nVON//z1JlV0c+zl557JJ/nmJkiZG2c/JC5oBSSclnRdx2a2SnvO/v0nSqxGXZfu/O7ab2/bxiJ/f\nLmlnp30+L+lR//sdkq6IuGyhpN3R7itJr0m6KuKyKyS97n9/maQTktIjLq+VdHEX4/yRpHsjfu7p\n2CcljezmMb1J0p+iXMeyiJ+vkvSy//2HJD3faf/vSbq7i+M/L++N6cXyQv7PJV0pL6T8o4v76x5J\nv4u47DxJJ3rzuHTanubft9OjXFbiPx/Suxj3U5I+5X//VUm/lne+XuQ+Z/mP1XslZXS67B5Jj3V+\n3nZxe1+RdHUvX4P14dvT+TqivI7WSroj4rJzJLXK60UQvv0TIy5fL+n6KNcZj9faUUkNkt6Q9KCk\nLEmz/d/r8vnq//7vJN3nf/9hSQc73/8R+16mbl5f8qa8/8T//nR5QXxcxP37Qqfn0z55H3719Pfh\nHkl/jPKciHq8zs+JKLfj05J+1en59M6In38u73xKyau43tLpeo5LmtKb5xhffPE1NL6oEAJINhPk\nnc8zRt6bwU3+NKYGSav97ZL36f9rvTjev8sLl+vNmy748Sj7FErKkPeGMuwNfyxh+8PfOOfCFZfu\nmtLsivh+irxqVkPEbfmCvAqRJI3vtH/k952NjzLO8RE/1znnghE/H+9hnH059kHnXHMvjxVpf8T3\nkeOZIuntne6Xj8qrwkTzB3lvyi/1v39OXoXpX/yfe3v9I807D6unxyVSoaSR6sVzzszKzewF86aE\nNsgLwYX+xd+SVyVdY9500rskyTn3qrw36vdIqjWzJ8xsfJTD96TL14WZLfGn/jX648qLGFdPoj03\n0tXxvurqcY4Uj9fa+51z+c65Kc65O5xzJ+RV6yRpXFe/5FcU3603K26/lvcY/59urqu719djkub5\nle/r5H3YsS9i3/bXtfMaZ+2Wd7/25nkY7W9CV8frfDvPNm+a8n5/yuk3dOrj3t1r9LsR4zos7+/p\nBAEYNgiEAJKGmZXJe6PxJ3ndL09IOt9/s5fvnMtzb06Z2yUp2pS5Dpxz+51zn3DOjZdXiXjQ/PMG\nIxySV+2IPDdmsqQ9A7g5kY1adsmrbOZHfOU4567yL98nbzpr2KRujrs3yjj3DmCcfTl2T81n+tqc\nZpekP3S6X0Y5527vYv/OgfAP6l0g7O76u3tcIh2S16Wy2+eceedc/o+86aXFzps6+4y8N9Fyzh1x\nzn3GOXeGvKmsi80/V9A591PndWidIu++7E/Hy6ivC/POF/x3eUGlwB9XY3hc6vmxi/bcCEo60Mfx\nxeO1Fs0r8u6LD3azz8fkvQ9aad55sTvkBcJ+LbXhvHMY/yqviv0xST/utEv769qfJjpR3v3am+dh\n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\nU/8/VCO+bXIV+XQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x119e60ac8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "kpca = KernelPCA(n_components = 2, kernel = \"sigmoid\", gamma = 10)\n",
    "kpca.fit(X_train_std)\n",
    "X_train_kpca = kpca.transform(X_train_std)\n",
    "X_test_kpca = kpca.transform(X_test_std)\n",
    "\n",
    "X_combined_kpca = np.vstack((X_train_kpca, X_test_kpca))\n",
    "y_combined = np.hstack((y_train, y_test))\n",
    "\n",
    "lr = LogisticRegression(C = 1000, random_state = 0, penalty = \"l2\")\n",
    "lr.fit(X_train_kpca, y_train)\n",
    "test_pred= lr.predict(X_test_kpca)\n",
    "score = accuracy_score(test_pred, y_test)\n",
    "print(\"Accuracy score on kpca data: %.4f\" % score)\n",
    "\n",
    "plt.figure(figsize = (15, 10))\n",
    "plot_decision_regions(X_combined_kpca, y_combined, lr)\n",
    "plt.xlabel(\"PC1\")\n",
    "plt.ylabel(\"PC2\")\n",
    "plt.title(\"Decision region for the wine classification on PCA hyperplane\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
